Firebird a zmena collate v uz existujucich tabulkach
Otázka od: hlas
4. 6. 2004 7:52
Neviete niekto poradit ako zmenit collate na csy v uz existujucej
databaze a uz existujucich tabulkach?
Odpovedá: Pavel Cisar
4. 6. 2004 9:06
Haj hou!
On 4 Jun 2004 at 8:25, hlas wrote:
> Neviete niekto poradit ako zmenit collate na csy v uz existujucej
> databaze a uz existujucich tabulkach?
U domeny:
ALTER DOMAIN name TYPE stejny_typ CHARACTER SET charset COLLATE
collate ;
Pokud nepouzivate domeny 9coz je chyba), pak primo na tabulce:
ALTER TABLE table ALTER sloupec TYPE stejny_typ CHARACTER SET charset
COLLATE collate ;
Z hlavy si nejsem jisty, jak si FB poradi s indexy na dana pole,
mozna bude nutne je nejdrive odstranit. Po provedeni zmen je *velmi
vhodne* udelat zalohu a obnovu.
S pozdravem
Pavel Cisar ( ICQ: 89017288)
Mobil: 724 281429
http://www.ibphoenix.cz
Vse co potrebujete pro Firebird a InterBase
Odpovedá: hlas
6. 6. 2004 13:41
From: "Pavel Cisar"
> U domeny:
> ALTER DOMAIN name TYPE stejny_typ CHARACTER SET charset COLLATE
> collate ;
Pouzivam domeny, ale v IBExperte sa mi nedari vykonat tento prikaz:
ALTER DOMAIN vch5 TYPE varchar(50) CHARACTER SET WIN1250 COLLATE PXW_CSY;
kurzor mi ostava pred collate - tam je vraj chyba - hlasi ibexpert;
vch5 je nazov domeny
varchar 50 je typ
win1250 je character set
a
win1250 je povodny collate, ktory sa snazim zmenit na PXW_CSY
tiez doteraz som robil mnoho zmien priamo cez prostredie IBEXpert a ibexpert
vygeneroval
sam sql prikaz. v tomto pripade ak v prostredi ibexperta zmenim collate, tak
ibexpert mi to umozni,
ale nic nevykona.
je chyba v ibexperte? je ten prikaz spravny?
Odpovedá: hlas
6. 6. 2004 19:00
From: "Pavel Cisar"
> U domeny:
> ALTER DOMAIN name TYPE stejny_typ CHARACTER SET charset COLLATE
> collate ;
a teraz som to skusal aj mimo ibexperta cez komponentu v delphi.
jednoducho prikaz:
alter domain vch5 type varchar(50) character set win1250 collate PXW_CSY;
je chybny a nezbehne.
Robim ja niekde chybu alebo som daco prehliadol?
Odpovedá: hlas
7. 6. 2004 7:05
From: "Pavel Cisar"
> U domeny:
> ALTER DOMAIN name TYPE stejny_typ CHARACTER SET charset COLLATE
> collate ;
skusal som vytvorit novu domenu, ktora nie je nikde pouzita a rovnu ju
zmenit
(zmenit v nej collate z win1250 na csy) ani to nejde prikazom:
alter DOMAIN "moja" type VARCHAR(20) CHARACTER SET WIN1250 COLLATE PXW_CSY;
takze to nesuvisi ani s okolitymi polami, v ktorych je pouzita.
Odpovedá: Pavel Cisar
7. 6. 2004 8:24
Haj hou!
On 6 Jun 2004 at 14:21, hlas wrote:
>
> From: "Pavel Cisar"
> > U domeny:
> > ALTER DOMAIN name TYPE stejny_typ CHARACTER SET charset COLLATE
> > collate ;
>
>
> Pouzivam domeny, ale v IBExperte sa mi nedari vykonat tento prikaz:
>
> ALTER DOMAIN vch5 TYPE varchar(50) CHARACTER SET WIN1250 COLLATE PXW_CSY;
>
> kurzor mi ostava pred collate - tam je vraj chyba - hlasi ibexpert;
Chybicka se vloudila. ALTER DOMAIN a ALTER TABLE skutecne nedovoluji
specifikovat collate, a to v rozporu s dokumentaci
Nicmene reseni existuje:
1) "neciste" reseni, ktere provadi i IBExpert pokud provedete zmenu
collate primou editaci domeny v editoru:
update RDB$FIELDS set
RDB$CHARACTER_SET_ID = 51, /* 51 je WIN1250 */
RDB$COLLATION_ID = 1 /* 1 je PXW_CSY */
where RDB$FIELD_NAME = 'nazev-domeny'
2) "ciste" reseni. Vytvorit novou domenu s novym collate, vytvorit
novy sloupec dle teto domeny. Prekopirovat data pomoci UPDATE, zrusit
puvodni sloupec a domenu.
V obou pripadech provest nasledne zalohu a obnovu.
S pozdravem
Pavel Cisar ( ICQ: 89017288)
Mobil: 724 281429
http://www.ibphoenix.cz
Vse co potrebujete pro Firebird a InterBase